package com.wenjiang.model.callback;

import com.alibaba.fastjson.annotation.JSONField;
import com.wenjiang.model.request.AbstractWxRequest;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.io.Serializable;
import java.util.Map;

/**
 * @description:
 * @author：lwj
 * @date: 2024/12/11
 * @Copyright： 沉淀、分享、成长，让自己和他人都能有所收获！
 */

@Data
@EqualsAndHashCode(callSuper = false)
public class LantuPayCallbackNotifyRequest extends AbstractWxRequest implements Serializable {
    /**
     * 支付结果
     * 0：成功
     * 1：失败
     */
    @JSONField(name = "code")
    private String code;

    /**
     * 时间戳
     */
    @JSONField(name = "timestamp")
    private String timestamp;

    /**
     * 商户号
     */
    @JSONField(name = "mch_id")
    private String mchId;

    /**
     * 系统订单号
     */
    @JSONField(name = "order_no")
    private String orderNo;

    /**
     * 商户订单号
     */
    @JSONField(name = "out_trade_no")
    private String outTradeNo;

    /**
     * 支付宝或微信支付订单号
     */
    @JSONField(name = "pay_no")
    private String payNo;

    /**
     * 支付金额
     */
    @JSONField(name = "total_fee")
    private String totalFee;

    /**
     * 签名
     */
    @JSONField(name = "sign")
    private String sign;

    /**
     * 支付渠道
     * alipay：支付宝
     * wxpay：微信支付
     */
    @JSONField(name = "pay_channel")
    private String payChannel;

    /**
     * 支付类型
     * NATIVE：扫码支付
     * H5：H5支付
     * APP：APP支付
     * JSAPI：公众号支付
     * MINIPROGRAM：小程序支付
     */
    @JSONField(name = "trade_type")
    private String tradeType;

    /**
     * 支付完成时间
     */
    @JSONField(name = "success_time")
    private String successTime;

    /**
     * 附加数据
     */
    @JSONField(name = "attach")
    private String attach;

    /**
     * 支付者信息
     */
    @JSONField(name = "openid")
    private String openid;




    @Override
    public Map<String, String> storeParams(Map<String, String> map) {
        map.put("code",code);
        map.put("timestamp",timestamp);
        map.put("mch_id",mchId);
        map.put("order_no",orderNo);
        map.put("out_trade_no",outTradeNo);
        map.put("pay_no",payNo);
        map.put("total_fee",totalFee);
        map.put("sign",sign);
        return map;
    }
}


